package com.example.studentportrait.service.impl;

import com.example.studentportrait.domain.entity.Email;
import com.example.studentportrait.mapper.EmailMapper;
import com.example.studentportrait.service.EmailService;
import com.example.studentportrait.utils.Pagebean;
import com.example.studentportrait.utils.RedisCache;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;

@Service
public class EmailServiceImpl implements EmailService {


    @Resource
    EmailMapper emailMapper;
    @Resource
    RedisCache redisCache;
    /**
     * 新建邮件（草稿或发送）
     * @param email
     * @return
     */
    @Override
    public int addEmail(Email email) {
        email.setSendAccount(redisCache.getCacheObject("account"));
        email.setSendTime(new Date());
        emailMapper.insertEmail(email);
        return 0;
    }

    /**
     * 修改邮件
     * @param email
     * @return
     */
    @Override
    public int updateEmail(Email email) {
        email.setSendTime(new Date());
        emailMapper.upDateById(email);
        return 0;
    }

    /**
     * 删除邮件
     * @param email
     * @return
     */
    @Override
    public int deleteEmail(Email email) {
        emailMapper.deleteById(email);
        return 0;
    }

    /**
     * 查询草稿箱邮件
     * @param account
     * @return
     */
    @Override
    public Pagebean getByDraft(int page,int pagesize,String account) {
        PageHelper.startPage(page, pagesize); // 开启分页查询
        List<Email> audit = emailMapper.selectByDraft(account); // 执行查询，此时返回的是分页后的List
        // 使用PageInfo来获取分页信息
        PageInfo<Email> pageInfo = new PageInfo<>(audit);
        // 假设你有一个自定义的pagebean类
        Pagebean pb = new Pagebean();
        pb.setTotal(pageInfo.getTotal()); // 设置总记录数
        pb.setItems(Collections.singletonList(audit)); // 设置结果列表
        return pb;

    }

    /**
     * 发件箱邮件
     * @param account
     * @return
     */
    @Override
    public Pagebean getBySender(int page,int pagesize,String account) {
        PageHelper.startPage(page, pagesize); // 开启分页查询
        List<Email> audit = emailMapper.selectBySender(account); // 执行查询，此时返回的是分页后的List
        // 使用PageInfo来获取分页信息
        PageInfo<Email> pageInfo = new PageInfo<>(audit);
        // 假设你有一个自定义的pagebean类
        Pagebean pb = new Pagebean();
        pb.setTotal(pageInfo.getTotal()); // 设置总记录数
        pb.setItems(Collections.singletonList(audit)); // 设置结果列表
        return pb;
    }

    /**
     * 收件箱邮件
     * @param account
     * @return
     */
    @Override
    public Pagebean getByReceiver(int page,int pagesize,String account) {
        PageHelper.startPage(page, pagesize); // 开启分页查询
        List<Email> audit = emailMapper.selectByReceiver(account); // 执行查询，此时返回的是分页后的List
        // 使用PageInfo来获取分页信息
        PageInfo<Email> pageInfo = new PageInfo<>(audit);
        // 假设你有一个自定义的pagebean类
        Pagebean pb = new Pagebean();
        pb.setTotal(pageInfo.getTotal()); // 设置总记录数
        pb.setItems(Collections.singletonList(audit)); // 设置结果列表
        return pb;
    }

    /**
     * 查询收藏邮件
     * @param account
     * @return
     */
    @Override
    public Pagebean getByCollect(int page,int pagesize,String account) {
        emailMapper.selectByCollect(account);
        return null;
    }

    /**
     * 收藏邮件
     * @param email
     * @return
     */
    @Override
    public int setCollect(Email email) {
        email.setStatus(4);
        emailMapper.updateByEmailId(email);
        return 0;
    }
}
